ng911ok.lib.geomutils module#
- _bind_and_call(func: Callable[[_P], _T], /, arg_dict: dict[str, Any]) _T#
Calls a function with a
dictof arguments, handling cases like positional-only parameters and variable-length (*args/**kwargs) parameters.
- _calculate_buffer_angles(keep_side: Literal['ALL', 'LEFT', 'RIGHT'] = 'ALL', keep_along: Literal['ALL', 'NEAR', 'FAR'] = 'ALL', angle: float | None = None) tuple[float, int]#
- _cast_single_geometry(geom_object: PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference, target_type: type[T_Geometry]) T_Geometry#
Converts a single geom_object between corresponding
arcpyandarcgis.geometrytypes.
- _get_corresponding_geom_type(geom_type: type[PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]) type[PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]#
- _get_cutter_lines(line: Polyline | Polyline, distance_meters: float) tuple[Polyline, Polyline]#
Returns lines for cutting the end-caps off buffers. The cutter lines are oriented such that they are perpendicular to (specifically, 90 degrees to the right of) line The first returned value corresponds to the start point of line and the second to the end point.
- _trim_buffer(buffer: T_Polygon, start_cutter: Polyline | Polyline, end_cutter: Polyline | Polyline) T_Polygon#
- cast_geometry(match_type_of: str, /, **targets: type[PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]) Callable[[Callable[[...], PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]], Callable[[...], PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]]#
Similar to
cast_input_geometry(), but also ensures that the return type of the decorated function matches that of the argument for the parameter named match_type_of.
- cast_input_geometry(**targets: type[PointGeometry | Point | Multipoint | MultiPoint | Polyline | Polyline | Polygon | Polygon | SpatialReference | SpatialReference]) Callable[[Callable], Callable]#
Decorator factory to allow decorated functions to take geometry objects from either the
arcpyorarcgispackages while ensuring that parameters specified in targets will always be of one specific type.For example, consider these functions:
def hopefully_arcpy_polygon(polygon_obj: arcpy.Polygon | arcgis.geometry.Polygon) -> None: assert isinstance(polygon, arcpy.Polygon) @cast_input_geometry(polygon_obj=arcpy.Polygon) def definitely_arcpy_polygon(polygon_obj: arcpy.Polygon | arcgis.geometry.Polygon) -> None: assert isinstance(polygon, arcpy.Polygon)
The function
hopefully_arcpy_polygonwill only succeed if it is called with an instance ofarcpy.Polygonas thepolygon_objargument. The functiondefinitely_arcpy_polygon, however will succeed even ifpolygon_objis an instance ofarcgis.geometry.Polygonbecause of the decorator.- Parameters:
targets (type[arcpy.Geometry | arcgis.geometry.Geometry]) – Mapping of parameter name(s) in the decorated function to the desired type of each argument
- Returns:
A decorator
- Return type:
Callable[[Callable], Callable]
- get_end_from_curve(curve_dict: dict[Literal['a', 'b', 'c'], list]) list[float | None]#
Given a curve dict, returns the endpoint of the curve.
- get_midpoint(line_feature: Polyline | Polyline) PointGeometry#
Returns an
arcpy.PointGeometryat the midpoint of line_feature.
- get_segment(line: T_Polyline, part: int, start_vertex: int, end_vertex: int) T_Polyline#
- get_segments(line: T_Polyline, part: int) list[T_Polyline]#
- get_vertex(line: Polyline | Polyline, vertex_index: int) PointGeometry#
- get_vertex(line: Polyline | Polyline, part_index: int, vertex_index: int) PointGeometry
- meters_between(point1: PointGeometry | Point, point2: PointGeometry | Point, method: Literal['GEODESIC', 'PLANAR', 'GREAT_ELLIPTIC', 'LOXODROME', 'PRESERVE_SHAPE'] = 'GEODESIC') float#
- point_beside_line(line_feature: ~arcpy.arcobjects.geometries.Polyline | ~arcgis.geometry._types.Polyline, side: ~typing.Literal['LEFT', 'RIGHT'], distance_meters: float, segment: int = 0, part: int = 0, method: ~typing.Literal['GEODESIC', 'PLANAR', 'GREAT_ELLIPTIC', 'LOXODROME', 'PRESERVE_SHAPE'] = 'GEODESIC', return_as: type[~ng911ok.lib.geomutils.T_PointGeom] = <class 'arcpy.arcobjects.geometries.PointGeometry'>) T_PointGeom#
Returns a point 90 degrees to either the left or the right of the input line_feature, offset by distance_meters.
- polyline_from_point_geometries(*geoms: PointGeometry | Point, spatial_reference: SpatialReference | SpatialReference | None = None) Polyline#
Convenience method to create an
arcpy.Polylinewith geoms as its vertices. If no spatial_reference is provided, that of the first item in geoms is used.
- trim_and_split_buffer(buffer: Polygon | Polygon, line: Polyline | Polyline, buffer_distance_meters: float) tuple[Polygon, Polygon] | tuple[None, None]#